package com.bestcem.xm.user.controller.vo.group;

import com.bestcem.xm.user.enums.GroupImportRecordStatusEnum;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;

import java.util.Date;

/**
 * 层级组织导入记录vo
 *
 * @author wangyunyun <yunyun.wang@idiaoyan.com>
 * @version v1.0
 * @date 2022/4/20 10:57
 */
@Getter
@Setter
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class UserGroupImportRecordVO {
    /**
     * 主键
     */
    private String importId;

    /**
     * 导入类型 0: 管理后台导入 1：开放平台导入
     */
    private Integer type;

    /**
     * 状态 0: 待处理 1: 处理中 2: 处理成功 3: 处理失败
     */
    private Integer status;

    /**
     * 导入文件名称
     */
    private String importFileName;

    /**
     * 导入文件路径
     */
    private String importFilePath;

    /**
     * 导入文件大小
     */
    private String importFileSize;

    /**
     * 错误文件路径
     */
    private String errorFilePath;

    /**
     * 错误类型 0: 格式错误 1: 数据错误
     */
    private Integer errorType;

    /**
     * 错误信息
     */
    private String errorMsg;

    /**
     * 备注
     */
    private String content;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 公司id
     */
    private String orgId;

    /**
     * 创建用户id
     */
    private String creatorId;

    /**
     * 更新用户id
     */
    private String operatorId;

    /**
     * 获取错误类型 0: 格式错误 1: 数据错误
     *
     * @return Integer
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/7/12 12:23
     */
    public Integer getErrorType() {
        // 上传处理失败设置失败类型； 其他情况下 失败类型为空
        if (GroupImportRecordStatusEnum.FAIL_HAND.getStatus().equals(this.getStatus())) {
            return StringUtils.isNotBlank(this.getErrorFilePath()) ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO;
        } else {
            return null;
        }
    }
}
